﻿using System;
using Entity;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace Service
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IServerOnline" in both code and config file together.
    [ServiceContract(CallbackContract = typeof(ICheckerClient))]
    public interface IServerServices
    {
        [OperationContract]
        bool IsOnline();
        [OperationContract]
        StepServiceResponse StepProcess(StepRequest request);
        [OperationContract]
        SendMsgServiceResponse SendMsgProcess(SendMsgRequest request);
        [OperationContract]
        RegistrationServiceResponse RegistrationProcess(RegistrationRequest request);
        [OperationContract]
        NewGameServiceResponse NewGameProcess(NewGameRequest request);
        [OperationContract]
        LogoutServiceResponse LogoutProcess(LogoutRequest request);
        [OperationContract]
        LoginServiceResponse LoginProcess(LoginRequest request);
        [OperationContract]
        ListGameServiceResponse ListGameProcess(ListGameRequest request);
        [OperationContract]
        JoinGameServiceResponse JoinGameProcess(JoinGameRequest request);
        [OperationContract]
        GiveUpServiceResponse GiveUpProcess(GiveUpRequest request);
        [OperationContract]
        GetMsgServiceResponse GetMsgProcess(GetMsgRequest request);
        [OperationContract]
        CloseGameServiceResponse CloseGameProcess(CloseGameRequest request);
        /*[OperationContract]
        GameResultServiceResponse GameResultProcess(GameResultRequest request);*/
        [OperationContract]
        PlayerStatsServiceResponse PlayerStatsProcess(PlayerStatsRequest request);
        /*[OperationContract]
        StartGameServiceResponse StartGameProcess(StartGameRequest request);*/
    }
}
